import colorsys

# 为每一个国家定义一个颜色
# 定义国家和地区列表
countries = [
    "澳大利亚", "奥地利", "比利时", "加拿大", "智利", "捷克", "丹麦", "爱沙尼亚",
    "芬兰", "法国", "德国", "希腊", "匈牙利", "冰岛", "爱尔兰", "以色列",
    "意大利", "日本", "韩国", "卢森堡", "墨西哥", "荷兰", "新西兰", "挪威",
    "波兰", "葡萄牙", "西班牙", "瑞典", "瑞士", "土耳其", "英国", "美国",
    "巴西", "中国", "中国香港", "马来西亚", "俄罗斯", "沙特阿拉伯",
    "新加坡", "中国台湾", "泰国", "乌克兰"
]


dic = {
    '中国': (229, 45, 45),
     '奥地利': (229, 72, 45), 
     '比利时': (229, 98, 45), 
    '加拿大': (229, 124, 45), 
    '智利': (229, 150, 45), 
    '捷克': (229, 177, 45), 
    '丹麦': (229, 203, 45), 
    '爱沙尼亚': (229, 229, 45), 
    '芬兰': (203, 229, 45), 
    '法国': (177, 229, 45), 
    '德国': (150, 229, 45), 
    '希腊': (124, 229, 45), 
    '匈牙利': (98, 229, 45), 
    '冰岛': (72, 229, 45), 
    '爱尔兰': (45, 229, 45), 
    '以色列': (45, 229, 72), 
    '意大利': (45, 229, 98), 
    '日本': (45, 229, 124), 
    '韩国': (45, 229, 150), 
    '卢森堡': (45, 229, 177), 
    '墨西哥': (45, 229, 203), 
    '荷兰': (45, 229, 229), 
    '新西兰': (45, 203, 229), 
    '挪威': (45, 177, 229), 
    '波兰': (45, 150, 229), 
    '葡萄牙': (45, 124, 229), 
    '西班牙': (45, 98, 229), 
    '瑞典': (45, 72, 229), 
    '瑞士': (45, 45, 229), 
    '土耳其': (72, 45, 229), 
    '英国': (98, 45, 229), 
    '美国': (124, 45, 229), 
    '巴西': (150, 45, 229), 
    '澳大利亚': (177, 45, 229), 
    '中国香港': (203, 45, 229), 
    '马来西亚': (229, 45, 229), 
    '俄罗斯': (229, 45, 203), 
    '沙特阿拉伯': (229, 45, 177), 
    '新加坡': (229, 45, 150), 
    '中国台湾': (229, 45, 124), 
    '泰国': (229, 45, 98), 
    '乌克兰': (229, 45, 72)}

def generate_transparent_colors(r, g, b):
    """
    根据给定的 RGB 颜色生成 10 个依次变透明的颜色
    :param r: 红色值（0 - 255）
    :param g: 绿色值（0 - 255）
    :param b: 蓝色值（0 - 255）
    :return: 包含 10 个 RGBA 颜色元组的列表
    """
    transparent_colors = []
    # 计算透明度的步长
    step = 255 // 10
    for i in range(10):
        # 计算当前的透明度
        alpha = 255 - i * step
        # 生成 RGBA 颜色元组
        rgba = (r, g, b, alpha)
        rgba_color = f"rgba({r}, {g}, {b}, {alpha / 255})"
        transparent_colors.append(rgba_color)
    return transparent_colors

def print_colored_text(text, colors):
    """
    根据给定的颜色列表打印字符，颜色逐渐变化
    :param text: 要打印的文本
    :param colors: 颜色列表，每个元素是一个 RGBA 颜色字符串
    """
    for i, char in enumerate(text):
        color = colors[i % len(colors)]
        # 在 ANSI 转义序列中，无法直接使用 RGBA，这里简化为 RGB
        r, g, b = map(int, color.split('(')[1].split(')')[0].split(',')[:3])
        print(f"\033[38;2;{r};{g};{b}m{char}\033[0m", end='')
    print()


def create_colors():
    country_color_series = {
    }
    for k,v in dic.items():
        r,g,b = v
        colors = generate_transparent_colors(r,g,b)
        country_color_series[k] = colors
    for k,colors in country_color_series.items():
        print_colored_text(k, colors)
    return country_color_series

country_color_series = create_colors()
    
if __name__ == '__main__':
    print()